ExtJS একটি শক্তিশালী ফ্রন্টএন্ড ফ্রেমওয়ার্ক, যা Drag and Drop ফিচার সমর্থন করে। এটি ব্যবহারকারীদের উপাদানগুলি (কম্পোনেন্ট, প্যানেল, গ্রিড ইত্যাদি) ড্র্যাগ এবং ড্রপ করার মাধ্যমে ইন্টারঅ্যাক্ট করতে সহায়তা করে। ExtJS-এ Drag and Drop এর জন্য বিল্ট-ইন সাপোর্ট এবং ইভেন্ট হ্যান্ডলার রয়েছে যা খুব সহজেই এই ফিচারটি অ্যাপ্লিকেশনগুলিতে সংযুক্ত করতে পারে।
এখানে আমরা একটি সাধারণ Drag and Drop উদাহরণ দেখব যেখানে একটি প্যানেলকে অন্য প্যানেলে ড্র্যাগ এবং ড্রপ করা যাবে।
ExtJS-এ ড্র্যাগ এবং ড্রপ করার জন্য আমরা Draggable
এবং Droppable
এর মত প্রপার্টি ব্যবহার করতে পারি। নিচে একটি বেসিক Drag and Drop উদাহরণ দেখানো হলো।
Ext.create('Ext.panel.Panel', {
title: 'Drag Me!',
width: 200,
height: 100,
draggable: true, // প্যানেলটি ড্র্যাগ করা যাবে
renderTo: Ext.getBody(),
html: '<p>Drag me to another area!</p>',
listeners: {
render: function(panel) {
panel.getEl().on('drag', function(e, target) {
console.log('Panel is being dragged');
});
}
}
});
Ext.create('Ext.panel.Panel', {
title: 'Drop Zone',
width: 300,
height: 200,
renderTo: Ext.getBody(),
style: 'border: 2px solid black; margin-top: 20px;',
html: '<p>Drop here!</p>',
listeners: {
render: function(panel) {
panel.getEl().on('drop', function(e, target) {
console.log('Panel was dropped here');
});
}
}
});
এখানে:
panel
ড্র্যাগযোগ্য (draggable: true
), যার মানে এটি অন্য প্যানেলে ড্র্যাগ করা যাবে।listeners
ইভেন্ট ব্যবহার করে আমরা drag
এবং drop
ইভেন্ট হ্যান্ডল করছি।এখানে একটি Grid কম্পোনেন্ট ব্যবহার করে ড্র্যাগ এবং ড্রপ ইভেন্ট তৈরি করা হয়েছে, যেখানে আমরা গ্রিডের একটি রেকর্ড ড্র্যাগ করে অন্য গ্রিডে ড্রপ করতে পারি।
Ext.create('Ext.data.Store', {
storeId: 'simpsonsStore',
fields: ['name', 'email', 'phone'],
data: [
{ 'name': 'Lisa', 'email': 'lisa@simpsons.com', 'phone': '555-111-1224' },
{ 'name': 'Bart', 'email': 'bart@simpsons.com', 'phone': '555-222-1234' },
{ 'name': 'Homer', 'email': 'homer@simpsons.com', 'phone': '555-222-1244' }
]
});
Ext.create('Ext.grid.Panel', {
title: 'Simpsons',
store: Ext.data.StoreManager.lookup('simpsonsStore'),
width: 400,
height: 300,
renderTo: Ext.getBody(),
columns: [
{ text: 'Name', dataIndex: 'name', flex: 1 },
{ text: 'Email', dataIndex: 'email', flex: 1 },
{ text: 'Phone', dataIndex: 'phone', flex: 1 }
],
viewConfig: {
plugins: {
ptype: 'gridviewdragdrop',
dragText: 'Drag and drop to reorder'
}
}
});
এখানে:
gridviewdragdrop
প্যানেলটি ড্র্যাগ এবং ড্রপ করার জন্য ব্যবহৃত প্লাগইন। এটি gridview এর মধ্যে ড্র্যাগ এবং ড্রপ কার্যকারিতা প্রদান করে।dragText
: ড্র্যাগ করতে থাকা রেকর্ডের জন্য একটি টেক্সট প্রদান করা হয়।এখন, আমরা দুটি গ্রিড তৈরি করব এবং এক গ্রিড থেকে অন্য গ্রিডে ডেটা ড্র্যাগ এবং ড্রপ করব।
Ext.create('Ext.data.Store', {
storeId: 'firstStore',
fields: ['name', 'email', 'phone'],
data: [
{ 'name': 'Lisa', 'email': 'lisa@simpsons.com', 'phone': '555-111-1224' },
{ 'name': 'Bart', 'email': 'bart@simpsons.com', 'phone': '555-222-1234' }
]
});
Ext.create('Ext.data.Store', {
storeId: 'secondStore',
fields: ['name', 'email', 'phone'],
data: [
{ 'name': 'Homer', 'email': 'homer@simpsons.com', 'phone': '555-222-1244' }
]
});
Ext.create('Ext.grid.Panel', {
title: 'First Grid',
store: Ext.data.StoreManager.lookup('firstStore'),
width: 400,
height: 300,
renderTo: Ext.getBody(),
columns: [
{ text: 'Name', dataIndex: 'name', flex: 1 },
{ text: 'Email', dataIndex: 'email', flex: 1 },
{ text: 'Phone', dataIndex: 'phone', flex: 1 }
],
viewConfig: {
plugins: {
ptype: 'gridviewdragdrop',
dragText: 'Drag and drop to reorder'
}
}
});
Ext.create('Ext.grid.Panel', {
title: 'Second Grid',
store: Ext.data.StoreManager.lookup('secondStore'),
width: 400,
height: 300,
renderTo: Ext.getBody(),
columns: [
{ text: 'Name', dataIndex: 'name', flex: 1 },
{ text: 'Email', dataIndex: 'email', flex: 1 },
{ text: 'Phone', dataIndex: 'phone', flex: 1 }
],
viewConfig: {
plugins: {
ptype: 'gridviewdragdrop',
dragText: 'Drag and drop items here'
}
}
});
এখানে, দুটি গ্রিড ব্যবহার করা হয়েছে:
gridviewdragdrop
প্লাগইন ব্যবহার করা হয়েছে, যা গ্রিডে ড্র্যাগ এবং ড্রপ কার্যকারিতা সক্ষম করে।
Draggable
এবং Droppable
ফিচারের মাধ্যমে আপনি যেকোনো কম্পোনেন্ট ড্র্যাগ এবং ড্রপ করতে পারেন।gridviewdragdrop
প্লাগইন ব্যবহার করা হয়।এটি আপনাকে একাধিক ভিউ বা ডেটা সেটের মধ্যে সহজে নেভিগেট করার সুযোগ দেয় এবং ইউজারের জন্য ইন্টারেক্টিভ অভিজ্ঞতা তৈরি করে।
Read more